不知不覺,也過了一半,今天就來處理亂數按鈕,亂數按鈕大概會這樣設計,
先生成格數和按鈕一樣的陣列,產生一個亂數,然後去和陣列裡所有儲存的數字做比較,比較完之後,沒有重複就印進去按鈕&陣列裡儲存這個亂數,再來換下一格去做一樣的事情,直到所有格子都有數字。
首先要記得要先setOnClickListener亂數那個按鈕,但這次會放在按鈕生成之後才讓他(亂數按鈕)被監聽,因為如果沒有按鈕就按的話,他會不知道要把數字印到哪裡,然後就直接閃退GG給你看,為了避免這種事,所以才這樣做。
m_binding.btnRandom.setOnClickListener(this);
private Random m_random = new Random();
onClick也要記得加~~
if (R.id.btnRandom == view.getId()) {
printRandom();
}
產生亂數:
private void printRandom() {
for (int i = 0; i < m_iSize * m_iSize; i++) {
m_alBingoButtons.get(i).saveNumber(0);
}
int iRandomNumber = 0; //用來暫時儲存產生的亂數
boolean bRepeatFlag = true; //檢查是否重複
for (int i = 0; i < m_alBingoButtons.size(); i++) {
iRandomNumber = 0;
bRepeatFlag = true;
while (bRepeatFlag == true) {
bRepeatFlag = false; //都false的話代表沒數字重複,可以換下個button產生
iRandomNumber = m_random.nextInt(m_iSize * 10) + 1;
//檢查產生亂數數值是否重複
for (int j = 0; j < m_alBingoButtons.size(); j++) {
if (iRandomNumber == m_alBingoButtons.get(j).getNumber()) { //檢查
bRepeatFlag = true; //true代表有重複,要重新產生亂數
break;
}
}
}
m_alBingoButtons.get(i).saveNumber(iRandomNumber); //把沒有重複的亂數放到陣列
}
for (int i = 0; i < m_alBingoButtons.size(); i++) {
m_alBingoButtons.get(i).getButton().setText(String.valueOf(m_alBingoButtons.get(i).getNumber()));
//將陣列儲存的數字印在按鈕上
}
產生畫面:
這樣就順利產生亂數啦~也可以弄上面的輸入數字去把亂數蓋掉,也可以順便測試看看數字重複會發生什麼事情。